package slice

import (
	"fmt"
	"reflect"
)

func Test() {
	var x []int = []int{1, 2, 3}

	fmt.Println(x)
	fmt.Println(reflect.TypeOf(x))

	x1 := make([]float32, 5)
	fmt.Println(x1)
	fmt.Println(reflect.TypeOf(x1))

	y := []int{1, 2, 3, 4, 5, 6}
	y1 := y[1:4]
	fmt.Println(y1, reflect.TypeOf(y1))

	fmt.Println(len(y1), cap(y1))

	// 给元素增加元素
	fmt.Printf("未更新前的切片,%p", y1)
	y1 = append(y1, 9090, 9091, 9092)
	// 切片中的元素，如果超过容量值，自动扩容,扩容的原则是未扩容前的*2
	fmt.Println(y1, reflect.TypeOf(y1), cap(y1))
	fmt.Printf("更新后的切片,%p", y1)

	// 增加一个新的切片
	y1 = append(y1, []int{99, 98, 97, 96, 97}...)
	fmt.Println(y1, reflect.TypeOf(y1), len(y1), cap(y1))

	// 切片的copy
	z1 := []int{1, 2, 3}
	z2 := []int{6, 7, 8, 9, 50}
	//copy(z1, z2)
	//fmt.Println("z1=", z1)
	//fmt.Println("z2=", z2)
	copy(z2, z1)
	fmt.Println("z1=", z1)
	fmt.Println("z2=", z2)

}
